﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;


/// <summary>
/// Clase BuscarPropuesta.aspx.cs contiene las operaciones necesarias para
/// poder buscar una propuesta registrada dentro del sistema. 
///
/// Autor: Equipo # 1
/// </summary>
public partial class MasterPage2 : System.Web.UI.Page
{
    static IList<Propuesta> propuestas;
    static int posicion;
    int contador;
    protected IEnumerator ienum;
    PropuestaControl control = new PropuestaControl();
    Propuesta propuesta = new Propuesta();
    static Propuesta prop;


    protected void Page_Load(object sender, EventArgs e)
    {
        //Response.Redirect("Vista/ConsultarPropuesta.aspx?variable=" + TextBox1.Text);
    }
    private string m_Titulo;
    public string Titulo
    {
        get
        {
            return m_Titulo;
        }
        set
        {
            m_Titulo = value;
            //this.H1Titulo.InnerText = value;
        }
    }


    /// <summary>
    /// Nombre del metodo: buscarpropuesta
    /// este metodo se encarga de validar la informacion introducido por el usuario, es decir
    /// verifica que el DropDownList1 y el textbox1 no se encunetre vacios, en caso de estar
    /// vacios arroja en mensaje de alerta avisando al usuario que el campo debe estar lleno, y 
    /// en caso contrario de haber colocado informacion en textbox1 llena el GridView1 con la
    /// informacion encontrada en la bd
    /// </summary>
    ///
    /// <param name="nombre"> string parametro,string bus
    /// 
    /// </param>los parametros recibidos son propios del C# 
    /// object sender, EventArgs e
    protected void buscarpropuesta(object sender, EventArgs e)
    {

        try
        {
            string param = TextBox1.Text.ToString();
            string Parametro = DropDownList1.Text.ToString();
            propuestas = control.BusquedaPropuesta(Parametro, param);
            int total = propuestas.Count;
            if (total == 0)
            {
                this.GridView1.Columns.Clear();
                this.GridView1.EmptyDataText = "No existen Propuestas para el parametro introducido";
                this.GridView1.Caption = "Propuestas buscadas por " + Parametro + " " + param;
                this.GridView1.DataSource = propuestas;
                this.GridView1.DataBind();
                this.Button1.Enabled = true;
                this.Button1.Visible = true;
            }
            else
            {
                this.GridView1.Columns.Clear();
                BoundField codigo = new BoundField();
                BoundField titulo = new BoundField();
                BoundField version = new BoundField();
                BoundField cliente = new BoundField();
                BoundField nombrereceptor = new BoundField();
                BoundField apellidoreceptor = new BoundField();
                BoundField cargoreceptor = new BoundField();
                BoundField fecha = new BoundField();
                BoundField estatus = new BoundField();


                codigo.DataField = "Codigo";
                codigo.HeaderText = "CODIGO";
                titulo.DataField = "Titulo";
                titulo.HeaderText = "TITULO";
                version.DataField = "Version";
                version.HeaderText = "VERSION";
                cliente.DataField = "Cliente";
                cliente.HeaderText = "CLIENTE";
                nombrereceptor.DataField = "NombreReceptor";
                nombrereceptor.HeaderText = "NOMBRE DEL RECEPTOR";
                apellidoreceptor.DataField = "ApellidoReceptor";
                apellidoreceptor.HeaderText = "APELLIDO DEL RECEPTOR";
                cargoreceptor.DataField = "CargoReceptor";
                cargoreceptor.HeaderText = "CARGO DEL RECEPTOR";
                fecha.DataField = "Fecha";
                fecha.HeaderText = "FECHA";
                estatus.DataField = "Status";
                estatus.HeaderText = "STATUS";
                this.GridView1.Columns.Add(codigo);
                this.GridView1.Columns.Add(titulo);
                this.GridView1.Columns.Add(version);
                this.GridView1.Columns.Add(cliente);
                this.GridView1.Columns.Add(nombrereceptor);
                this.GridView1.Columns.Add(apellidoreceptor);
                this.GridView1.Columns.Add(cargoreceptor);
                this.GridView1.Columns.Add(fecha);
                this.GridView1.Columns.Add(estatus);



                this.GridView1.Caption = "Propuestas buscadas por " + Parametro + " " + param;
                this.GridView1.DataSource = propuestas;
                this.GridView1.DataBind();
                this.Button1.Enabled = true;
                this.Button1.Visible = true;
            }
        }
        catch (Exception ex2)
        {
            if (ex2.Message.Equals("version"))
            {
                Response.Write("<script language='JavaScript'>alert('La Version debe ser un Numero');</script>");
            }
            else
            {
                Response.Write("<script language='JavaScript'>alert('El Formato de la Fecha no es correcto');</script>");
            }
        }




        //IList<Propuesta> lista = null;
        //ISession session = NHibernateControl.GetCurrentSession();
        //ITransaction tx = session.BeginTransaction();

        //ICriteria miCriteria = session.CreateCriteria(typeof(Propuesta));

        //switch (Parametro)
        //{
        //    case "Codigo":
        //        string codigo = TextBox1.Text;
        //        miCriteria.Add(Expression.Eq("Codigo", codigo));
        //        break;

        //    case "Titulo":
        //        string titulo = TextBox1.Text;
        //        miCriteria.Add(Expression.Eq("Titulo", titulo));
        //        break;

        //    case "Version":
        //        double version = double.Parse(TextBox1.Text);
        //        miCriteria.Add(Expression.Eq("Version", version));
        //        break;

        //    case "Cliente":
        //        string cliente = TextBox1.Text;
        //        miCriteria.Add(Expression.Eq("Cliente", cliente));
        //        break;

        //    case "Nombre del Receptor":
        //        string nombreReceptor = TextBox1.Text;
        //        miCriteria.Add(Expression.Eq("NombreReceptor", nombreReceptor));
        //        break;

        //    case "Apellido del Receptor":
        //        string apellidoReceptor = TextBox1.Text;
        //        miCriteria.Add(Expression.Eq("ApellidoReceptor", apellidoReceptor));
        //        break;

        //    case "Cargo del Receptor":
        //        string cargoReceptor = TextBox1.Text;
        //        miCriteria.Add(Expression.Eq("CargoReceptor", cargoReceptor));
        //        break;

        //    case "Fecha de Propuesta":
        //        string fechaPropuesta = TextBox1.Text + " 12:00:00 a.m.";
        //        miCriteria.Add(Expression.Eq("Fecha", fechaPropuesta));
        //        break;

        //}


        //lista = miCriteria.List<Propuesta>();

        //if (lista != null)
        //{
        //    Propuesta res = lista[0];
        //    //GridView1.Rows(0).Cells(0).text = res.ProTitulo;
        //    GridView1.DataSource = lista;
        //    GridView1.DataBind();
            
        //}

        //tx.Commit();
    }


    /// <summary>
    /// Manejador de eventos encargado de buscar la propuesta seleccionada en el GridView.
    /// 
    /// Autor: Equipo # 1
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Button2.Visible = true;
        posicion = GridView1.SelectedIndex;
        ienum = propuestas.GetEnumerator();
        contador = 0;

        while (ienum.MoveNext())
        {

            if (posicion.Equals(contador))
            {
                propuesta = (Propuesta)ienum.Current;
                prop = propuesta;
                break;
            }
            else
            {
                contador++;
                propuesta = null;
            }
        }
        prop = propuesta;
        TextBox1.Text = prop.NombreReceptor;
    }

    /// <summary>
    /// Devuelve una propuesta.
    /// 
    /// Autor: Equipo # 1
    /// </summary>
    public Propuesta GetPropuesta
    {
        get
        {
            return prop;
        }
    }


}

